home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / FB.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  18KB  |  490 lines

  1. #ifndef _LINUX_FB_H
  2. #define _LINUX_FB_H
  3.  
  4. #include <asm/types.h>
  5.  
  6. /* Definitions of frame buffers                        */
  7.  
  8. #define FB_MAJOR    29
  9.  
  10. #define FB_MODES_SHIFT        5    /* 32 modes per framebuffer */
  11. #define FB_NUM_MINORS        256    /* 256 Minors               */
  12. #define FB_MAX            (FB_NUM_MINORS / (1 << FB_MODES_SHIFT))
  13. #define GET_FB_IDX(node)    (MINOR(node) >> FB_MODES_SHIFT)
  14.  
  15. /* ioctls
  16.    0x46 is 'F'                                */
  17. #define FBIOGET_VSCREENINFO    0x4600
  18. #define FBIOPUT_VSCREENINFO    0x4601
  19. #define FBIOGET_FSCREENINFO    0x4602
  20. #define FBIOGETCMAP        0x4604
  21. #define FBIOPUTCMAP        0x4605
  22. #define FBIOPAN_DISPLAY        0x4606
  23. /* 0x4607-0x460B are defined below */
  24. /* #define FBIOGET_MONITORSPEC    0x460C */
  25. /* #define FBIOPUT_MONITORSPEC    0x460D */
  26. /* #define FBIOSWITCH_MONIBIT    0x460E */
  27. #define FBIOGET_CON2FBMAP    0x460F
  28. #define FBIOPUT_CON2FBMAP    0x4610
  29.  
  30. #define FB_TYPE_PACKED_PIXELS        0    /* Packed Pixels    */
  31. #define FB_TYPE_PLANES            1    /* Non interleaved planes */
  32. #define FB_TYPE_INTERLEAVED_PLANES    2    /* Interleaved planes    */
  33. #define FB_TYPE_TEXT            3    /* Text/attributes    */
  34.  
  35. #define FB_AUX_TEXT_MDA        0    /* Monochrome text */
  36. #define FB_AUX_TEXT_CGA        1    /* CGA/EGA/VGA Color text */
  37. #define FB_AUX_TEXT_S3_MMIO    2    /* S3 MMIO fasttext */
  38. #define FB_AUX_TEXT_MGA_STEP16    3    /* MGA Millenium I: text, attr, 14 reserved bytes */
  39. #define FB_AUX_TEXT_MGA_STEP8    4    /* other MGAs:      text, attr,  6 reserved bytes */
  40.  
  41. #define FB_VISUAL_MONO01        0    /* Monochr. 1=Black 0=White */
  42. #define FB_VISUAL_MONO10        1    /* Monochr. 1=White 0=Black */
  43. #define FB_VISUAL_TRUECOLOR        2    /* True color    */
  44. #define FB_VISUAL_PSEUDOCOLOR        3    /* Pseudo color (like atari) */
  45. #define FB_VISUAL_DIRECTCOLOR        4    /* Direct color */
  46. #define FB_VISUAL_STATIC_PSEUDOCOLOR    5    /* Pseudo color readonly */
  47.  
  48. #define FB_ACCEL_NONE        0    /* no hardware accelerator    */
  49. #define FB_ACCEL_ATARIBLITT    1    /* Atari Blitter        */
  50. #define FB_ACCEL_AMIGABLITT    2    /* Amiga Blitter                */
  51. #define FB_ACCEL_S3_TRIO64    3    /* Cybervision64 (S3 Trio64)    */
  52. #define FB_ACCEL_NCR_77C32BLT    4    /* RetinaZ3 (NCR 77C32BLT)      */
  53. #define FB_ACCEL_S3_VIRGE    5    /* Cybervision64/3D (S3 ViRGE)    */
  54. #define FB_ACCEL_ATI_MACH64GX    6    /* ATI Mach 64GX family        */
  55. #define FB_ACCEL_DEC_TGA    7    /* DEC 21030 TGA        */
  56. #define FB_ACCEL_ATI_MACH64CT    8    /* ATI Mach 64CT family        */
  57. #define FB_ACCEL_ATI_MACH64VT    9    /* ATI Mach 64CT family VT class */
  58. #define FB_ACCEL_ATI_MACH64GT    10    /* ATI Mach 64CT family GT class */
  59. #define FB_ACCEL_SUN_CREATOR    11    /* Sun Creator/Creator3D    */
  60. #define FB_ACCEL_SUN_CGSIX    12    /* Sun cg6            */
  61. #define FB_ACCEL_SUN_LEO    13    /* Sun leo/zx            */
  62. #define FB_ACCEL_IMS_TWINTURBO    14    /* IMS Twin Turbo        */
  63. #define FB_ACCEL_3DLABS_PERMEDIA2 15    /* 3Dlabs Permedia 2        */
  64. #define FB_ACCEL_MATROX_MGA2064W 16    /* Matrox MGA2064W (Millenium)    */
  65. #define FB_ACCEL_MATROX_MGA1064SG 17    /* Matrox MGA1064SG (Mystique)    */
  66. #define FB_ACCEL_MATROX_MGA2164W 18    /* Matrox MGA2164W (Millenium II) */
  67. #define FB_ACCEL_MATROX_MGA2164W_AGP 19    /* Matrox MGA2164W (Millenium II) */
  68. #define FB_ACCEL_MATROX_MGAG100    20    /* Matrox G100 (Productiva G100) */
  69. #define FB_ACCEL_MATROX_MGAG200    21    /* Matrox G200 (Myst, Mill, ...) */
  70. #define FB_ACCEL_SUN_CG14    22    /* Sun cgfourteen         */
  71. #define FB_ACCEL_SUN_BWTWO    23    /* Sun bwtwo             */
  72. #define FB_ACCEL_SUN_CGTHREE    24    /* Sun cgthree             */
  73. #define FB_ACCEL_SUN_TCX    25    /* Sun tcx             */
  74.  
  75. struct fb_fix_screeninfo {
  76.     char id[16];            /* identification string eg "TT Builtin" */
  77.     char *smem_start;        /* Start of frame buffer mem */
  78.                     /* (physical address) */
  79.     __u32 smem_len;            /* Length of frame buffer mem */
  80.     __u32 type;            /* see FB_TYPE_*        */
  81.     __u32 type_aux;            /* Interleave for interleaved Planes */
  82.     __u32 visual;            /* see FB_VISUAL_*        */ 
  83.     __u16 xpanstep;            /* zero if no hardware panning  */
  84.     __u16 ypanstep;            /* zero if no hardware panning  */
  85.     __u16 ywrapstep;        /* zero if no hardware ywrap    */
  86.     __u32 line_length;        /* length of a line in bytes    */
  87.     char *mmio_start;        /* Start of Memory Mapped I/O   */
  88.                     /* (physical address) */
  89.     __u32 mmio_len;            /* Length of Memory Mapped I/O  */
  90.     __u32 accel;            /* Type of acceleration available */
  91.     __u16 reserved[3];        /* Reserved for future compatibility */
  92. };
  93.  
  94. /* Interpretation of offset for color fields: All offsets are from the right,
  95.  * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
  96.  * can use the offset as right argument to <<). A pixel afterwards is a bit
  97.  * stream and is written to video memory as that unmodified. This implies
  98.  * big-endian byte order if bits_per_pixel is greater than 8.
  99.  */
  100. struct fb_bitfield {
  101.     __u32 offset;            /* beginning of bitfield    */
  102.     __u32 length;            /* length of bitfield        */
  103.     __u32 msb_right;        /* != 0 : Most significant bit is */ 
  104.                     /* right */ 
  105. };
  106.  
  107. #define FB_NONSTD_HAM        1    /* Hold-And-Modify (HAM)        */
  108.  
  109. #define FB_ACTIVATE_NOW        0    /* set values immediately (or vbl)*/
  110. #define FB_ACTIVATE_NXTOPEN    1    /* activate on next open    */
  111. #define FB_ACTIVATE_TEST    2    /* don't set, round up impossible */
  112. #define FB_ACTIVATE_MASK       15
  113.                     /* values            */
  114. #define FB_ACTIVATE_VBL           16    /* activate values on next vbl  */
  115. #define FB_CHANGE_CMAP_VBL     32    /* change colormap on vbl    */
  116. #define FB_ACTIVATE_ALL           64    /* change all VCs on this fb    */
  117.  
  118. #define FB_ACCELF_TEXT        1    /* text mode acceleration */
  119.  
  120. #define FB_SYNC_HOR_HIGH_ACT    1    /* horizontal sync high active    */
  121. #define FB_SYNC_VERT_HIGH_ACT    2    /* vertical sync high active    */
  122. #define FB_SYNC_EXT        4    /* external sync        */
  123. #define FB_SYNC_COMP_HIGH_ACT    8    /* composite sync high active   */
  124. #define FB_SYNC_BROADCAST    16    /* broadcast video timings      */
  125.                     /* vtotal = 144d/288n/576i => PAL  */
  126.                     /* vtotal = 121d/242n/484i => NTSC */
  127. #define FB_SYNC_ON_GREEN    32    /* sync on green */
  128.  
  129. #define FB_VMODE_NONINTERLACED  0    /* non interlaced */
  130. #define FB_VMODE_INTERLACED    1    /* interlaced    */
  131. #define FB_VMODE_DOUBLE        2    /* double scan */
  132. #define FB_VMODE_MASK        255
  133.  
  134. #define FB_VMODE_YWRAP        256    /* ywrap instead of panning     */
  135. #define FB_VMODE_SMOOTH_XPAN    512    /* smooth xpan possible (internally used) */
  136. #define FB_VMODE_CONUPDATE    512    /* don't update x/yoffset    */
  137.  
  138. struct fb_var_screeninfo {
  139.     __u32 xres;            /* visible resolution        */
  140.     __u32 yres;
  141.     __u32 xres_virtual;        /* virtual resolution        */
  142.     __u32 yres_virtual;
  143.     __u32 xoffset;            /* offset from virtual to visible */
  144.     __u32 yoffset;            /* resolution            */
  145.  
  146.     __u32 bits_per_pixel;        /* guess what            */
  147.     __u32 grayscale;        /* != 0 Graylevels instead of colors */
  148.  
  149.     struct fb_bitfield red;        /* bitfield in fb mem if true color, */
  150.     struct fb_bitfield green;    /* else only length is significant */
  151.     struct fb_bitfield blue;
  152.     struct fb_bitfield transp;    /* transparency            */    
  153.  
  154.     __u32 nonstd;            /* != 0 Non standard pixel format */
  155.  
  156.     __u32 activate;            /* see FB_ACTIVATE_*        */
  157.  
  158.     __u32 height;            /* height of picture in mm    */
  159.     __u32 width;            /* width of picture in mm     */
  160.  
  161.     __u32 accel_flags;        /* acceleration flags (hints)    */
  162.  
  163.     /* Timing: All values in pixclocks, except pixclock (of course) */
  164.     __u32 pixclock;            /* pixel clock in ps (pico seconds) */
  165.     __u32 left_margin;        /* time from sync to picture    */
  166.     __u32 right_margin;        /* time from picture to sync    */
  167.     __u32 upper_margin;        /* time from sync to picture    */
  168.     __u32 lower_margin;
  169.     __u32 hsync_len;        /* length of horizontal sync    */
  170.     __u32 vsync_len;        /* length of vertical sync    */
  171.     __u32 sync;            /* see FB_SYNC_*        */
  172.     __u32 vmode;            /* see FB_VMODE_*        */
  173.     __u32 reserved[6];        /* Reserved for future compatibility */
  174. };
  175.  
  176. struct fb_cmap {
  177.     __u32 start;            /* First entry    */
  178.     __u32 len;            /* Number of entries */
  179.     __u16 *red;            /* Red values    */
  180.     __u16 *green;
  181.     __u16 *blue;
  182.     __u16 *transp;            /* transparency, can be NULL */
  183. };
  184.  
  185. struct fb_con2fbmap {
  186.     __u32 console;
  187.     __u32 framebuffer;
  188. };
  189.  
  190. struct fb_monspecs {
  191.     __u32 hfmin;            /* hfreq lower limit (Hz) */
  192.     __u32 hfmax;             /* hfreq upper limit (Hz) */
  193.     __u16 vfmin;            /* vfreq lower limit (Hz) */
  194.     __u16 vfmax;            /* vfreq upper limit (Hz) */
  195.     unsigned dpms : 1;        /* supports DPMS */
  196. };
  197.  
  198. #ifdef __KERNEL__
  199.  
  200. #include <linux/fs.h>
  201.  
  202.  
  203. struct fb_info;
  204. struct fb_info_gen;
  205. struct vm_area_struct;
  206. struct file;
  207.  
  208.     /*
  209.      *  Frame buffer operations
  210.      */
  211.  
  212. struct fb_ops {
  213.     /* open/release and usage marking */
  214.     int (*fb_open)(struct fb_info *info, int user);
  215.     int (*fb_release)(struct fb_info *info, int user);
  216.     /* get non settable parameters */
  217.     int (*fb_get_fix)(struct fb_fix_screeninfo *fix, int con,
  218.               struct fb_info *info); 
  219.     /* get settable parameters */
  220.     int (*fb_get_var)(struct fb_var_screeninfo *var, int con,
  221.               struct fb_info *info);        
  222.     /* set settable parameters */
  223.     int (*fb_set_var)(struct fb_var_screeninfo *var, int con,
  224.               struct fb_info *info);        
  225.     /* get colormap */
  226.     int (*fb_get_cmap)(struct fb_cmap *cmap, int kspc, int con,
  227.                struct fb_info *info);
  228.     /* set colormap */
  229.     int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con,
  230.                struct fb_info *info);
  231.     /* pan display */
  232.     int (*fb_pan_display)(struct fb_var_screeninfo *var, int con,
  233.               struct fb_info *info);
  234.     /* perform fb specific ioctl */
  235.     int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd,
  236.             unsigned long arg, int con, struct fb_info *info);
  237.     /* perform fb specific mmap */
  238.     int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
  239. };
  240.  
  241.  
  242.    /*
  243.     *    This is the interface between the low-level console driver and the
  244.     *    low-level frame buffer device
  245.     */
  246.  
  247. struct display {
  248.     /* Filled in by the frame buffer device */
  249.  
  250.     struct fb_var_screeninfo var;   /* variable infos. yoffset and vmode */
  251.                     /* are updated by fbcon.c */
  252.     struct fb_cmap cmap;            /* colormap */
  253.     char *screen_base;              /* pointer to top of virtual screen */    
  254.                     /* (virtual address) */
  255.     int visual;
  256.     int type;                       /* see FB_TYPE_* */
  257.     int type_aux;                   /* Interleave for interleaved Planes */
  258.     u_short ypanstep;               /* zero if no hardware ypan */
  259.     u_short ywrapstep;              /* zero if no hardware ywrap */
  260.     u_long line_length;             /* length of a line in bytes */
  261.     u_short can_soft_blank;         /* zero if no hardware blanking */
  262.     u_short inverse;                /* != 0 text black on white as default */
  263.     struct display_switch *dispsw;  /* low level operations */
  264.     void *dispsw_data;            /* optional dispsw helper data */
  265.  
  266. #if 0
  267.     struct fb_fix_cursorinfo fcrsr;
  268.     struct fb_var_cursorinfo *vcrsr;
  269.     struct fb_cursorstate crsrstate;
  270. #endif
  271.  
  272.     /* Filled in by the low-level console driver */
  273.  
  274.     struct vc_data *conp;           /* pointer to console data */
  275.     struct fb_info *fb_info;        /* frame buffer for this console */
  276.     int vrows;                      /* number of virtual rows */
  277.     unsigned short cursor_x;        /* current cursor position */
  278.     unsigned short cursor_y;
  279.     int fgcol;                      /* text colors */
  280.     int bgcol;
  281.     u_long next_line;               /* offset to one line below */
  282.     u_long next_plane;              /* offset to next plane */
  283.     u_char *fontdata;               /* Font associated to this display */
  284.     unsigned short _fontheightlog;
  285.     unsigned short _fontwidthlog;
  286.     unsigned short _fontheight;
  287.     unsigned short _fontwidth;
  288.     int userfont;                   /* != 0 if fontdata kmalloc()ed */
  289.     u_short scrollmode;             /* Scroll Method */
  290.     short yscroll;                  /* Hardware scrolling */
  291.     unsigned char fgshift, bgshift;
  292.     unsigned short charmask;        /* 0xff or 0x1ff */
  293. };
  294.  
  295.  
  296. struct fb_info {
  297.    char modename[40];            /* default video mode */
  298.    int node;
  299.    int flags;
  300. #define FBINFO_FLAG_MODULE    1    /* Low-level driver is a module */
  301.    struct fb_ops *fbops;
  302.    struct fb_monspecs monspecs;
  303.    struct display *disp;        /* initial display variable */
  304.    struct vc_data *display_fg;        /* Console visible on this display */
  305.    char fontname[40];            /* default font name */
  306.    int (*changevar)(int);        /* tell console var has changed */
  307.    int (*switch_con)(int, struct fb_info*);
  308.                     /* tell fb to switch consoles */
  309.    int (*updatevar)(int, struct fb_info*);
  310.                     /* tell fb to update the vars */
  311.    void (*blank)(int, struct fb_info*);    /* tell fb to (un)blank the screen */
  312.                     /* arg = 0: unblank */
  313.                     /* arg > 0: VESA level (arg-1) */
  314.  
  315.    /* From here on everything is device dependent */
  316. };
  317.  
  318. #ifdef MODULE
  319. #define FBINFO_FLAG_DEFAULT    FBINFO_FLAG_MODULE
  320. #else
  321. #define FBINFO_FLAG_DEFAULT    0
  322. #endif
  323.  
  324.     /*
  325.      *  This structure abstracts from the underlying hardware. It is not
  326.      *  mandatory but used by the `generic' frame buffer operations.
  327.      *  Read drivers/video/skeletonfb.c for more information.
  328.      */
  329.  
  330. struct fbgen_hwswitch {
  331.     void (*detect)(void);
  332.     int (*encode_fix)(struct fb_fix_screeninfo *fix, const void *par,
  333.               struct fb_info_gen *info);
  334.     int (*decode_var)(const struct fb_var_screeninfo *var, void *par,
  335.               struct fb_info_gen *info);
  336.     int (*encode_var)(struct fb_var_screeninfo *var, const void *par,
  337.               struct fb_info_gen *info);
  338.     void (*get_par)(void *par, struct fb_info_gen *info);
  339.     void (*set_par)(const void *par, struct fb_info_gen *info);
  340.     int (*getcolreg)(unsigned regno, unsigned *red, unsigned *green,
  341.              unsigned *blue, unsigned *transp, struct fb_info *info);
  342.     int (*setcolreg)(unsigned regno, unsigned red, unsigned green,
  343.              unsigned blue, unsigned transp, struct fb_info *info);
  344.     int (*pan_display)(const struct fb_var_screeninfo *var,
  345.                struct fb_info_gen *info);
  346.     int (*blank)(int blank_mode, struct fb_info_gen *info);
  347.     void (*set_disp)(const void *par, struct display *disp,
  348.              struct fb_info_gen *info);
  349. };
  350.  
  351. struct fb_info_gen {
  352.     struct fb_info info;
  353.  
  354.     /* Entries for a generic frame buffer device */
  355.     /* Yes, this starts looking like C++ */
  356.     u_int parsize;
  357.     struct fbgen_hwswitch *fbhw;
  358.  
  359.    /* From here on everything is device dependent */
  360. };
  361.  
  362.     /*
  363.      *  `Generic' versions of the frame buffer device operations
  364.      */
  365.  
  366. extern int fbgen_get_fix(struct fb_fix_screeninfo *fix, int con,
  367.              struct fb_info *info);
  368. extern int fbgen_get_var(struct fb_var_screeninfo *var, int con,
  369.              struct fb_info *info);
  370. extern int fbgen_set_var(struct fb_var_screeninfo *var, int con,
  371.              struct fb_info *info);
  372. extern int fbgen_get_cmap(struct fb_cmap *cmap, int kspc, int con,
  373.               struct fb_info *info);
  374. extern int fbgen_set_cmap(struct fb_cmap *cmap, int kspc, int con,
  375.               struct fb_info *info);
  376. extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con,
  377.                  struct fb_info *info);
  378. extern int fbgen_ioctl(struct inode *inode, struct file *file,
  379.                unsigned int cmd, unsigned long arg, int con,
  380.                struct fb_info *info);
  381.  
  382.     /*
  383.      *  Helper functions
  384.      */
  385.  
  386. extern int fbgen_do_set_var(struct fb_var_screeninfo *var, int isactive,
  387.                 struct fb_info_gen *info);
  388. extern void fbgen_set_disp(int con, struct fb_info_gen *info);
  389. extern void fbgen_install_cmap(int con, struct fb_info_gen *info);
  390. extern int fbgen_update_var(int con, struct fb_info *info);
  391. extern int fbgen_switch(int con, struct fb_info *info);
  392. extern void fbgen_blank(int blank, struct fb_info *info);
  393.  
  394.  
  395. struct fb_videomode {
  396.     const char *name;
  397.     struct fb_var_screeninfo var;
  398. };
  399.  
  400.  
  401. /* drivers/char/fbmem.c */
  402. extern int register_framebuffer(struct fb_info *fb_info);
  403. extern int unregister_framebuffer(const struct fb_info *fb_info);
  404. extern int fbmon_valid_timings(u_int pixclock, u_int htotal, u_int vtotal,
  405.                    const struct fb_info *fb_info);
  406. extern int fbmon_dpms(const struct fb_info *fb_info);
  407.  
  408.  
  409. extern int num_registered_fb;
  410. extern struct fb_info *registered_fb[FB_MAX];
  411. extern char con2fb_map[MAX_NR_CONSOLES];
  412.  
  413. /* drivers/video/fbcon.c */
  414. extern struct display fb_display[MAX_NR_CONSOLES];
  415.  
  416. /* drivers/video/fbcmap.c */
  417. extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
  418. extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to,
  419.              int fsfromto);
  420. extern int fb_get_cmap(struct fb_cmap *cmap, int kspc,
  421.                int (*getcolreg)(u_int, u_int *, u_int *, u_int *,
  422.                     u_int *, struct fb_info *),
  423.                struct fb_info *fb_info);
  424. extern int fb_set_cmap(struct fb_cmap *cmap, int kspc,
  425.                int (*setcolreg)(u_int, u_int, u_int, u_int, u_int,
  426.                     struct fb_info *),
  427.                struct fb_info *fb_info);
  428. extern struct fb_cmap *fb_default_cmap(int len);
  429. extern void fb_invert_cmaps(void);
  430.  
  431. /* VESA Blanking Levels */
  432. #define VESA_NO_BLANKING    0
  433. #define VESA_VSYNC_SUSPEND    1
  434. #define VESA_HSYNC_SUSPEND    2
  435. #define VESA_POWERDOWN        3
  436.  
  437. #endif /* __KERNEL__ */
  438.  
  439. #if 1
  440.  
  441. #define FBCMD_GET_CURRENTPAR    0xDEAD0005
  442. #define FBCMD_SET_CURRENTPAR    0xDEAD8005
  443.  
  444. #endif
  445.  
  446.  
  447. #if 1 /* Preliminary */
  448.  
  449.    /*
  450.     *    Hardware Cursor
  451.     */
  452.  
  453. #define FBIOGET_FCURSORINFO     0x4607
  454. #define FBIOGET_VCURSORINFO     0x4608
  455. #define FBIOPUT_VCURSORINFO     0x4609
  456. #define FBIOGET_CURSORSTATE     0x460A
  457. #define FBIOPUT_CURSORSTATE     0x460B
  458.  
  459.  
  460. struct fb_fix_cursorinfo {
  461.     __u16 crsr_width;        /* width and height of the cursor in */
  462.     __u16 crsr_height;        /* pixels (zero if no cursor)    */
  463.     __u16 crsr_xsize;        /* cursor size in display pixels */
  464.     __u16 crsr_ysize;
  465.     __u16 crsr_color1;        /* colormap entry for cursor color1 */
  466.     __u16 crsr_color2;        /* colormap entry for cursor color2 */
  467. };
  468.  
  469. struct fb_var_cursorinfo {
  470.     __u16 width;
  471.     __u16 height;
  472.     __u16 xspot;
  473.     __u16 yspot;
  474.     __u8 data[1];            /* field with [height][width]        */
  475. };
  476.  
  477. struct fb_cursorstate {
  478.     __s16 xoffset;
  479.     __s16 yoffset;
  480.     __u16 mode;
  481. };
  482.  
  483. #define FB_CURSOR_OFF        0
  484. #define FB_CURSOR_ON        1
  485. #define FB_CURSOR_FLASH        2
  486.  
  487. #endif /* Preliminary */
  488.  
  489. #endif /* _LINUX_FB_H */
  490.